(function (){
    /**
     * 
     * 接口：用来定义一个类中包含哪些属性和方法
     *      同时接口可以当成类型声明去使用
     */

    interface MyInterface {
        name: string;
        age: number;
    }


    interface MyInterface {
        gender: string;
    }

   
    // const obj: MyInterface = {
    //     name: "张三",
    //     age: 4,
    //     gender: "男"
    // }

     /**
      *  接口可以在定义类的时候去限制类的结构
      *     接口中所有的属性都不能有实际的值
      *      接口只定义对象结构，而不考虑实际值
      *         接口中所有的方法都是抽象方法
     */

     interface MyInter{
        name:string;

        sayHello():void;
     }

     /**
      * 
      * 定义类时，可以使类去实现一个接口
      *   实现接口就是使类满足接口的需求
      * 
      */

     class Myclass implements MyInter{
        name:string;

        constructor(name:string){
            this.name = name
        }

        sayHello(): void {
            console.log("哈哈哈哈");
            
        }

        
     }

     const o = new Myclass('猫猫');
     o.sayHello()


})();